package com.atguigu.lease.web.admin.schedule;

import com.atguigu.lease.model.entity.LeaseAgreement;
import com.atguigu.lease.model.enums.LeaseStatus;
import com.atguigu.lease.web.admin.service.LeaseAgreementService;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 雒鑫
 */
@Component
public class ScheduleTasks {
    /* @Scheduled(cron = "* * * * * *")*/
    //cron表达式 6个*从左往右依次代表 每一秒 每一分 每一小时 每一天 每一月 每一周的
    //6个全是*代表 每天当中 每一秒执行一次
   /* public void test() {
        System.out.println(new Date());
    }*/
    @Autowired
    private LeaseAgreementService leaseAgreementService;

    //对公寓房间的状态设置定时任务 在每天的0时0分0秒进行检查 如果时间过期 修改其租约状态为已过期
    @Scheduled(cron = "0 0 0 * * *")//每天的0时0分0秒执行下面的方法
    public void checkLeaseStatus() {
        LambdaUpdateWrapper<LeaseAgreement> leaseAgreementUpdateWrapper = new LambdaUpdateWrapper<>();
        //第一个条件:判断数据库当中的租约结束日期是否小于当前的日期
        leaseAgreementUpdateWrapper.le(LeaseAgreement::getLeaseEndDate, new Date())
                //第二个条件:只修改租约状态为在租状态的租约
                .in(LeaseAgreement::getStatus, LeaseStatus.WITHDRAWING, LeaseStatus.SIGNED)
                .set(LeaseAgreement::getStatus, LeaseStatus.EXPIRED);
        leaseAgreementService.update(leaseAgreementUpdateWrapper);
    }
}
